home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-07 | 2.5 KB | 88 lines | [TEXT/MPCC] |
- // ————• WASTE Picture Object——————————————————————————————————————————————————————————
- // ———• by Michael F. Kamprath, kamprath@earthlink.net
-
- // ————• Includes——————————————————————————————————————————————————————————————————————
-
- #include "WEObjectPicture.h"
-
- // ————• Macros————————————————————————————————————————————————————————————————————————
-
- #define ThrowIfOSErr_(x) if(x != noErr) goto Exit
-
- // ————• Static Prototypes—————————————————————————————————————————————————————————————
-
- static pascal OSErr HandleNewPicture(Point *defaultObjectSize, WEObjectReference objectRef);
- static pascal OSErr HandleDisposePicture(WEObjectReference objectRef );
- static pascal OSErr HandleDrawPicture(Rect *destRect, WEObjectReference objectRef );
-
- static UniversalProcPtr sNewPictRD;
- static UniversalProcPtr sDisposePictRD;
- static UniversalProcPtr sDrawPictRD;
-
- // ————• Installer——————————————————————————————————————————————————————————————————————
-
- OSErr WEObjPictureInstall(WEHandle inWaste)
- {
- OSErr theErr = noErr;
-
- if(sNewPictRD == NULL)
- {
- sNewPictRD = NewWENewObjectProc(HandleNewPicture);
- sDisposePictRD = NewWEDisposeObjectProc(HandleDisposePicture);
- sDrawPictRD = NewWEDrawObjectProc(HandleDrawPicture);
- }
-
- theErr = WEInstallObjectHandler('PICT', weNewHandler, sNewPictRD, inWaste);
- ThrowIfOSErr_(theErr);
-
- theErr = WEInstallObjectHandler('PICT', weDisposeHandler, sDisposePictRD, inWaste);
- ThrowIfOSErr_(theErr);
-
- theErr = WEInstallObjectHandler('PICT', weDrawHandler, sDrawPictRD, inWaste);
- ThrowIfOSErr_(theErr);
-
- Exit:
- return theErr;
- }
-
- // ————• New handler—————————————————————————————————————————————————————————————————————
- pascal OSErr HandleNewPicture(Point *defaultObjectSize,WEObjectReference objectRef)
- {
- PicHandle thePic;
- Rect theFrame;
-
- thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
-
- theFrame = (*thePic)->picFrame;
-
- OffsetRect(&theFrame, -theFrame.left, -theFrame.top);
-
- *defaultObjectSize = botRight(theFrame);
-
- return(noErr);
- }
-
- // ————• Dispose handler—————————————————————————————————————————————————————————————————
- pascal OSErr HandleDisposePicture(WEObjectReference objectRef )
- {
- PicHandle thePic;
-
- thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
-
- if (thePic)
- KillPicture(thePic);
-
- return(MemError());
- }
-
- // ————• Draw handler————————————————————————————————————————————————————————————————————
- pascal OSErr HandleDrawPicture (Rect *destRect, WEObjectReference objectRef )
- {
- PicHandle thePic;
-
- thePic = (PicHandle)WEGetObjectDataHandle(objectRef);
-
- DrawPicture(thePic, destRect);
-
- return( noErr );
- }